#ifndef OCK_MEMORY_BRIDGE_OCK_ADAPTER_TASK_OCK_MEMORY_FREE_TASK_H
#define OCK_MEMORY_BRIDGE_OCK_ADAPTER_TASK_OCK_MEMORY_FREE_TASK_H
#include <memory>
#include "ock/acladapter/param/OckMemoryFreeParam.h"
#include "ock/acladapter/executor/OckAsyncResultInnerBridge.h"
#include "ock/acladapter/task/OckAsyncTaskExt.h"

namespace ock {
namespace acladapter {
class OckMemoryFreeFunOp : public OckTaskFunOp<OckMemoryFreeParam, OckDefaultResult>
{
public:
    virtual ~OckMemoryFreeFunOp() noexcept = default;
    explicit OckMemoryFreeFunOp(void);

    OckTaskResourceType ResourceType(void) const override;
    bool PreConditionMet(void) override;
    std::shared_ptr<_ResultT> Run(
        OckAsyncTaskContext &context, OckMemoryFreeParam &param, OckUserWaitInfoBase &waitInfo) override;
};
using OckMemoryFreeTask = OckAsyncTaskExt<OckDftAsyncTaskParam, OckDefaultResult, OckMemoryFreeFunOp>;

}
}
#endif